SM-2 algorithm
https://www.supermemo.com/english/ol/sm2.htm